package com.test.reactor.thread;
//生产者
public class P extends Thread{

    private String lock;

    public P(String lock) {
        super();
        this.lock = lock;
    }
    
    @Override
    public void run() {
        while (true) {
            try {
                synchronized (lock) { //当前线程必须获得锁才可以进行下面的操作
                    if (!ValueObject.value.equals("")) {//如果Value不为空，说明字符串还没被消费，所以调用wait方法，把当前线程（生成线程）阻塞
                        lock.wait();
                    }
                    String value = System.currentTimeMillis() + "_"
                            + System.nanoTime();
                    System.out.println("set的值是" + value);
                    ValueObject.value = value;//为空的话，则生成
                    lock.notify();//生成完就唤醒等待该对象锁的线程，（这里只有一个消费者等这个锁，所以就是唤醒的它）
                }

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}